package com.exrobot.module.rbt.service.iben;

import com.exrobot.module.rbt.dal.iben.auth.IbenAuthDTO;
import com.exrobot.module.rbt.dal.iben.auth.IbenCommonResult;
import com.exrobot.module.rbt.dal.iben.map.*;
import com.exrobot.module.rbt.dal.iben.task.*;
import com.exrobot.module.rbt.dal.iben.robot.OpenRobotDTO;
import com.exrobot.module.rbt.dal.iben.robot.OpenRobotDetail;
import com.exrobot.module.rbt.dal.iben.robot.OpenRobotDetailDTO;
import com.exrobot.module.rbt.dal.iben.robot.OpenRobotQuery;

import java.util.HashMap;

public interface RobotIbenService {

    /**
     * 授权认证
     * HashMap = { tenantCode: '企业编码'}
     * */
    IbenCommonResult<IbenAuthDTO> authAppSecret(HashMap<String,String> hashMap);

    /**
     * 取消任务
     * hashMap = {
     *   "clientCode": "",//客户端code
     *   "id": 0,//任务执行id
     *   "source": 0//任务来源 1-呼叫器 2-其他
     * }
     * */
    IbenCommonResult<OpenTaskExecDTO> cancelTask(OpenTaskCancel taskCancel);

    /**
     * 获取任务列表
     * */
    IbenCommonResult<OpenTaskRecordDTO> getTaskList(OpenTaskExecQuery query);

    /**
     * 新建任务
     * */
    IbenCommonResult<IbenAuthDTO> createExecTask(OpenTaskExecCreate taskExecCreate);

    /**
     * 获取任务详情
     * */
    IbenCommonResult<OpenTaskRecordDetailDTO> taskDetails(OpenTaskExecDetail taskExecDetail);

    /**
     * 获取地图详情
     * */
    IbenCommonResult<OpenMapDetailDTO> getMapDetail(OpenMapDetail mapDetail);

    /**
     * 获取地图列表
     *
     * */
    IbenCommonResult<OpenMapDTO> getMaps(OpenMapQuery mapQuery);
    /**
     * 获取点位详情
     *
     * */
    IbenCommonResult<PointDetailDTO> getPointDetail(OpenPointDetail pointDetail);
    /**
     * 获取点位列表
     * */
    IbenCommonResult<PointDetailDTO> getPoints(OpenMapPointsQuery mapPointsQuery);

    /**
     * 获取机器人列表
     * */
    IbenCommonResult<OpenRobotDTO> getRobots(OpenRobotQuery robotQuery);
    /**
     * 获取机器人详情（机器人版本信息及在线状态，运行状态）
     * */
    IbenCommonResult<OpenRobotDetailDTO> queryDetail(OpenRobotDetail robotQuery);

}
